<!-- Copyright 2014 Google Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<!-- BNF Grammar block
  Use this tag to declare a fragment of a grammar specification.
  This sets the block within an indented region of text and changes
  the default font-style to use italic.

  Note that the spacing for the grammar is taken from the LaTeX
  version of the draft standard (or as well as I can interpret
  the spacing in LaTeX - a .9\textwidth minipage with tabs every
  .6 inches).
-->
<polymer-element name="bnf-grammar" noscript>
  <template>
    <style>
      :host { display: block; font-style:italic; margin-left:.35in; };
    </style>
    <content></content>
  </template>
</polymer-element>

<!-- BNF rule
  Defines a BNF production.
-->
<polymer-element name="bnf-rule" noscript>
  <template>
    <style>
      :host { display: block; margin-left: .6in; }
    </style>
    <content></content>:
  </template>
</polymer-element>


<!-- BNF rule alternative.
  Indents the alternative beneath the rule name and applies
  a line break.
-->
<polymer-element name="bnf-alt" noscript>
  <template>
    <style>
      :host { display: block; margin-left:1.2in; }
    </style>
    <content></content>
  </template>
</polymer-element>

<!-- BNF terminal
  A terminal element in a BNF specification.
-->
<polymer-element name="bnf-terminal" noscript>
  <template><style>
    :host { font-style: normal; }
  </style><code><content></content></code></template>
</polymer-element>

<!-- BNF optional element -->
<polymer-element name="bnf-opt" noscript>
  <template><content></content><sub>opt</sub></template>
</polymer-element>

<!-- Grammar terms
  A grammar term refers to a BNF production in the grammar.

  TODO: Link grammar terms to their definitions?
 -->
<polymer-element name="cxx-grammarterm" noscript>
  <template><i><content></content></i></template>
</polymer-element>
